Skip to content

feat: 미션 기능 구현(#32)#34

Merged
chaiminwoo0223 merged 1 commit intodevelopfrom
feature/32
Jul 23, 2025
Merged

feat: 미션 기능 구현(#32)#34
chaiminwoo0223 merged 1 commit intodevelopfrom
feature/32

Conversation

@chaiminwoo0223
Copy link
Contributor

@chaiminwoo0223 chaiminwoo0223 commented Jul 20, 2025

📌 작업 내용 및 특이사항

✅ 미션 생성 API

  • 사용자가 특정 스탬프에 새로운 미션을 등록할 수 있도록 기능을 구현합니다.
  • 미션 순서는 MissionPolicy를 통해 중복되지 않도록 검증합니다.
  • 미션 생성 책임은 MissionFactory가 담당합니다.
  • 생성된 미션 정보는 CreateMissionResponse로 응답합니다.

✅ 미션 수정 API

  • 사용자가 특정 미션의 이름 또는 메모를 수정할 수 있도록 기능을 구현합니다.
  • 인증된 사용자만 수정이 가능하며, 소유자 불일치 시 예외가 발생합니다.
  • 이름과 메모 수정은 도메인 메서드 Mission.update()를 통해 수행합니다.

✅ 미션 순서 변경 API

  • 여러 미션의 순서를 일괄 수정할 수 있도록 기능을 구현합니다.
  • 요청으로 전달된 미션 ID 리스트 순서대로 missionOrder를 재할당합니다.
  • 순서 중복 여부는 MissionPolicy.validateMissionOrders()에서 검증합니다.

✅ 미션 삭제 API

  • 특정 미션을 soft delete 방식으로 삭제할 수 있도록 기능을 구현합니다.
  • 삭제는 Mission.updateDeletedAt() 메서드를 통해 처리되며, 실제로 DB에서 제거되지는 않습니다.

✅ 미션 목록 조회 API

  • 사용자가 특정 스탬프의 미션 목록을 조회할 수 있도록 기능을 구현합니다.
  • 삭제되지 않은 미션만 필터링하여 missionOrder 기준으로 정렬한 뒤 반환합니다.

✅ 요청(Request) DTO

  • CreateMissionRequest: 미션 생성 요청
  • UpdateMissionRequest: 미션 수정 요청
  • UpdateMissionOrderRequest: 미션 순서 일괄 수정 요청

✅ 응답(Response) DTO

  • CreateMissionResponse: 미션 생성 결과 응답
  • LoadMissionInfoResponse: 미션 목록 조회 응답

✅ 예외 처리

  • 미션 기능 전반의 예외 처리를 위한 MissionErrorCode를 정의
  • MISSION_ALREADY_DELETED, MISSION_NOT_BELONGS_TO_STAMP, MISSION_NOT_FOUND 추가

✅ 테스트

  • MissionServiceTest 단위 테스트 추가
  • MissionFixture 추가
  • CreateMissionRequestFixture, UpdateMissionRequestFixture, UpdateMissionOrderRequestFixture 추가
  • MissionTestHelper 추가
  • MissionControllerIntegrationTest 통합 테스트 추가

🌱 관련 이슈


🔍 참고사항

  • 각 미션 API는 독립적으로 작동하며, 인증된 사용자 권한을 기반으로 검증됩니다.
  • 미션 삭제는 DB에서 완전히 제거되지 않으며, 추후 복원 또는 로그 기록에 활용할 수 있습니다.

📚 기타

  • StampService: updateStampOrders, updateStampOrdersByTripCategoryChange 메서드로 이름 변경
  • src/main/java/com/ject/.DS_Store, src/test/java/com/ject/.DS_Store 삭제

@chaiminwoo0223 chaiminwoo0223 requested a review from hisonghy July 20, 2025 10:52
@chaiminwoo0223 chaiminwoo0223 self-assigned this Jul 20, 2025
@chaiminwoo0223 chaiminwoo0223 added the ✨feature 구현, 개선 사항 관련 부분 label Jul 20, 2025
Copy link
Contributor

@hisonghy hisonghy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코드 리뷰 작성했습니다. 확인부탁드려요

@hisonghy
Copy link
Contributor

hisonghy commented Jul 21, 2025

스크린샷 2025-07-21 오후 5 15 56

피그마를 확인해보니, 미션에 titlecontent 두 영역으로 나눠져있더라구요.
지금 미션 엔티티는 name 이라는 필드로만 관리되고 있는데, 이 부분 수정이 필요할 것 같아요.
미션 엔티티가 수정되면, 미션 생성/미션 수정 비즈니스 로직도 리팩토링해야할 것 같아요.

@chaiminwoo0223
Copy link
Contributor Author

chaiminwoo0223 commented Jul 21, 2025

피그마를 확인햅해보니, 미션에 titlecontent 두 영역으로 나눠져있더라구요. 지금 미션 엔티티는 name 이라는 필드로만 관리되고 있는데, 이 부분 수정이 필요할 것 같아요. 미션 엔티티가 수정되면, 미션 생성/미션 수정 비즈니스 로직도 리팩토링해야할 것 같아요.

확인했습니다. 미션 엔티티 수정하고, 미션 생성/미션 수정 비즈니스 로직도 리팩토링해서 다시 올리겠습니다.

@chaiminwoo0223
Copy link
Contributor Author

@songhyeonpk 여행, 스탬프, 미션에서 사용되는 필드 이름은 name, memo로 통일해서 사용하는 것이 좋을 것 같아요.

@hisonghy
Copy link
Contributor

@songhyeonpk 여행, 스탬프, 미션에서 사용되는 필드 이름은 name, memo로 통일해서 사용하는 것이 좋을 것 같아요.

지금 수정하게 되면 수정할 내용이 많아질 것 같아서 우선 mission만 적용하고 tripstamp는 추후 리팩토링 단계에서 통일하는게 좋을 것 같아요

Copy link
Contributor

@hisonghy hisonghy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다! 커밋 확인 후 병합부탁드려요

* feat: Mission에 update, updateMissionOrder, updateDeletedAt 메서드 추가
* feat: Mission에 memo 필드 추가
* feat: MissionFactory 구현
* feat: MissionErrorCode 추가
* feat: MissionRepository에 findAllByIdIn, existsByStampIdAndMissionOrderAndDeletedAtIsNull, save 등 메서드 추가
* feat: MemberService에 createMission, updateMissionNameAndMemo, updateMissionOrders, deleteMission 등 메서드 추가
* feat: MissionPolicy 구현
* feat: MissionFacade 구현
* feat: CreateMissionRequest, UpdateMissionRequest, UpdateMissionOrderRequest 추가
* feat: CreateMissionResponse 추가
* feat: MissionController 구현

* refactor: StampService에서 updateStampOrders, updateStampOrdersByTripCategoryChange 메서드로 이름 변경

* test: MissionFixture, CreateMissionRequestFixture, UpdateMissionRequestFixture, UpdateMissionOrderRequestFixture 추가
* test: MissionServiceTest 단위 테스트 추가
* test: MissionTestHelper 추가
* test: MissionControllerIntegrationTest 통합 테스트 추가
@chaiminwoo0223 chaiminwoo0223 merged commit 55cc898 into develop Jul 23, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨feature 구현, 개선 사항 관련 부분

Projects

None yet

Development

Successfully merging this pull request may close these issues.

✨[FEAT]: 미션 관련 기능 구현

2 participants